#include <iostream>

using namespace std;

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};

void flatten(TreeNode* root) {
    while (root)
    {
        TreeNode* lr = root->left;
        if (lr)
        {
            while (lr->right) lr = lr->right;

            lr->right = root->right;
            root->right = root->left;
            root->left = nullptr;
        }

        root = root->right;
    }
}

int main()
{

	return 0;
}